1
身份與值的區別:理解左值與右值
AI037Lesson 7
00:00

在 C++ 中,每個運算式都會產生一個 左值 或一個 右值。這個區別決定了運算式是參考物件的 身份 (位置在哪裡)還是其 (內容是什麼)。

1. 身份與內容的區別

一個 左值 (定位值)代表具有持久記憶體位址的物件。可將其想像成記憶體中的一個標籤盒。相反地,一個 右值 (讀取值)是暫時性的;它代表一個暫時結果或常數字面量,而該值對程式設計師來說沒有可存取的位址。

容器左值位址:0x7FFE資料右值值:42轉換

2. 功能性轉換

雖然左值可以當作右值使用(編譯器只需取出盒子內的值),但反過來則被禁止。你無法在需要左值的地方使用右值——例如,你不能對像 &42 這樣的常數字面量取位址,因為它缺乏持久的身份。

$$ \text{左值} \xrightarrow{\text{轉換}} \text{右值} \quad (\text{允許}) $$

$$ \text{右值} \xrightarrow{\text{賦值}} \text{左值} \quad (\text{禁止}) $$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>